/*
 * @Descripttion:
 * @version: 1.0.0
 * @Author: htang
 * @Date: 2024-03-08 11:49:57
 * @LastEditors: htang
 * @LastEditTime: 2024-03-08 18:05:44
 */
export default class ajax {

  /**
   * 请求阿里云OSS对象资源
   * 参考:
   * http://c.biancheng.net/view/5995.html
   * https://mgleon08.github.io/blog/2019/07/30/javascript-http-request/
   * @param {String} path 请求路径
   * @param {String} data 请求参数
   * @returns
   */
  static get({ path, data }) {
    const ROOT = 'http://27.45.145.110:3200/region-data/shunde/'
    const METHODS = 'get'
    return new Promise((resolve, reject) => {
      let request = new XMLHttpRequest()
      // 建立连接，要求异步响应
      request.open(METHODS, `${ROOT}${path}`)
      request.onreadystatechange = (res) => {
        /**
         * readyState
         * 值	状态	            描述
         * 0	UNSENT	          代理被创建，但尚未调用 open() 方法。
         * 1	OPENED	          open() 方法已经被调用。
         * 2	HEADERS_RECEIVED	send() 方法已经被调用，并且头部和状态已经可获得。
         * 3	LOADING	          下载中 responseText 属性已经包含部分数据。
         * 4	DONE	            下载操作已完成。
         */
        let { readyState, status } = res.target;
        // 监听readyState状态
        if (readyState == 4) {
          if ([0, 200].includes(status)) {
            resolve(eval('(' + request.response + ')'));
          } else {
            reject('An error has taken place');
          }
        }
      }
      // 发送请求
      request.send(data)
    })
  }
}